c++ getline和stringstream
全部标签 考虑这个程序:#include#include#include#includeintmain(){std::istringstreamstream("-1");unsignedshortn=0;stream>>n;assert(stream.fail()&&n==0);std::cout我在OSX10.5.6上的gcc(AppleInc.4.0.1版build5490)上试过这个,断言是正确的;它无法将-1转换为无符号短整型。然而,在VisualStudio2005(和2008)中,断言失败并且n的结果值与编译器生成的隐式转换所期望的相同-即“-1”是65535,“-2”是65534等
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:PrintingastringtoatemporarystreamobjectinC++std::ostringstreamprintingtheaddressofthec-stringinsteadofitscontent我正在尝试使用stringstream构建一个字符串,就像您使用cout一样。这类似于日志记录类。我遇到的问题是,如果//classIusetoprintoutthestreamclassStreamWriter{public:StreamWriter(){}~StreamWriter()
我有以下代码:std::stringstreamss;ss>result;std::cout我看到“1a”而不是“1abc”。我在某处读到我应该有ss有什么想法吗?提前致谢。 最佳答案 std::getline(ss,result);或者,只获取stringresult=ss.str(); 关于c++-stringstream不接受空格?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio
我从C++中的一个函数调用一个函数,该函数具有getline(cin,name)行,其中name是一个字符串。第一次通过循环时,程序不等待输入。它将通过循环的所有其他传递。有什么想法吗?voidgetName(string&name){intnameLen;do{cout 最佳答案 确保自上次从cin读取内容后没有遗漏,例如:在你的程序的前面一点:intnumber;cin>>number;您提供的输入:5程序后面:getline(cin,name);和getline似乎不会被调用,而是它收集了您上次输入时的换行符,因为当您使用ci
我正在使用std::stringstream构造一个字符串,然后尝试将完成的字符串作为对函数的引用传递,该函数将std::string&作为参数。我在GCC上遇到编译错误:../src/so.cpp:22:21:error:invalidinitializationofnon-constreferenceoftype‘std::string&{akastd::basic_string&}’fromanrvalueoftype‘std::basic_stringstream::__string_type{akastd::basic_string}’../src/so.cpp:12:6:e
#includeusingnamespacestd;intmain(){chartest[10];charcont[10];cin.getline(test,10);cin.getline(cont,10);cout当我输入时:12345678901234567890输出是:123456789cont似乎是空的。谁能解释一下? 最佳答案 如果输入太长,istream::getline会设置失败位,从而阻止进一步的输入。将您的代码更改为:#includeusingnamespacestd;intmain(){chartest[10];
关于thiswebsite,有人写道:while(!myfile.eof()){getline(myfile,line);cout这是错误的,请仔细阅读eof()的文档成员函数。正确的代码是这样的:while(getline(myfile,line))cout这是为什么? 最佳答案 有两个主要原因。@Etienne指出了一个:除了到达文件末尾之外的其他原因,读取可能会失败,在这种情况下,您的第一个版本将进入无限循环。然而,即使没有其他故障,第一个也无法正常工作。eof()不会被设置,直到after由于到达文件末尾而导致读取失败。这意
我一直在使用stringstream将Integer转换为String,但后来我意识到可以使用ostringstream完成相同的操作。当我使用.str()时,它们之间有什么区别?另外,有没有更有效的方法将整数转换为字符串?示例代码://usingostringstreamostringstreams1;inti=100;s1 最佳答案 还有第三个你没有提到,istringstream,你不能使用(你可以,但它会有所不同,你不能将转换为istringstream)。stringstream既是ostringstream和一个istr
我正在编写一个函数来返回数字的反转,即将int(1234)转换为int(4321)。这是我目前拥有的:#include#include#include#includeusingnamespacestd;intreverse(intnum){stringstreamss(stringstream::in|stringstream::out);stringinitial;intreversed;//readthenumberintoastringstreamss>reversed;returnreversed;}intmain(intargc,constchar*argv[]){intte
我正在使用std::stringstream从std::string值中解析一些数据。这段代码:std::stringstr="data1data2data3\"quotateddata\"";std::stringstreamss(str);如果我使用ss>>anotherStr;我得到每个单词用空格分隔。我不明白是否有一个选项可以要求stringstream将引号中的数据作为单个字符串值读取? 最佳答案 std::quotedio操纵器正是您所需要的。这里有一个方便的引用:http://en.cppreference.com/w